主机CPU或内存使用率过高导致网站无法访问

云虚拟主机的CPU或内存使用率过高时会导致网站无法正常访问,本文介绍这种情况的可能原因和解决方案。

问题现象

在独享云虚拟主机上成功搭建网站并正常运行一段时间后,访问网站时出现无法正常访问的现象。

可能原因

云虚拟主机的站点在网站运行过程中可能被恶意攻击,或者主机站点的配置文件(例如.htaccess文件)配置错误时,使得云虚拟主机的CPU使用率或内存使用率过高,从而导致网站无法正常访问。

说明

引起网站无法正常访问的原因较多,本文以主机的CPU或内存使用率过高原因为例进行说明。更多信息,请参见网站访问问题

解决方案

本文的解决方案仅适用于独享云虚拟主机,以普通版Linux操作系统独享云虚拟主机为例进行详细介绍。

  1. 登录云虚拟主机管理页面
  2. 找到站点无法访问的独享云虚拟主机,单击对应操作列的管理

  3. 在左侧导航栏,单击主机信息
  4. 监控信息区域,查看云虚拟主机的CPU或内存满载(即使用率为100%)时的时间段或者时间点。

    本图示以云虚拟主机的CPU使用率达到100%为例,您可以将鼠标移动到CPU监控线上即可看到CPU使用率达到100%时对应的时间点为2023年2月15日10:05:00。cpu

  5. 监控信息区域的按来源IP统计页签下,将鼠标移动到CPU满载时的时间点,即可查看并记录连接数过高的IP地址或IP网段(即存在异常的IP地址或IP网段)。

    说明

    将鼠标移动到CPU满载时的时间点,您也可以查看到连接时间、总连接数、来源IP数量以及每个IP地址的连接数量。

    本图示以2023年2月15日10:05:00时,连接数过高的IP地址(即TOP0:39.xxx.xxx.xxx)为例。IP地址

    • 如果存在异常IP地址,您需要屏蔽异常IP地址,请执行步骤6后继续执行步骤9

    • 如果存在某个IP网段异常,您需要使用连接数限制功能来限制该IP网段的并发连接数,请执行步骤7后继续执行步骤9

    • 如果存在大量不同网段的IP地址均异常,您需要使用连接数限制功能来限制每个IP地址的并发连接数,请执行步骤8后继续执行步骤9

  6. (可选)屏蔽异常IP地址。

    1. 在左侧导航栏,单击访问控制

    2. IP屏蔽页签下,单击添加IP

    3. 添加IP页面的IP区域,输入待屏蔽的异常IP地址,然后单击确认

    异常IP地址添加成功后,您可以在IP地址列表中查看到已添加的IP地址。屏蔽IP

  7. (可选)限制每个异常IP网段的并发连接数。

    1. 在左侧导航栏,单击访问控制

    2. 单击连接数限制页签。

    3. 连接数限制设置区域根据连接数限制状态的显示结果执行以下步骤:

      • 如果显示关闭 ,单击[开启限制]

      • 如果显示开启 ,单击[修改限制]

    4. 在弹出的开启限制修改限制页面,修改并发连接数限制,并单击高级配置后修改连接掩码为24。

      例如,如果并发连接数限制设置为10,连接掩码设置为24时,表示每个C段源IP最多支持10个连接。修改连接数

    5. 单击确认

  8. (可选)限制每个异常IP地址的并发连接数。

    1. 在左侧导航栏,单击访问控制

    2. 单击连接数限制页签

    3. 连接数限制设置区域,单击[修改限制]

    4. 在弹出的修改限制页面,修改并发连接数限制,并单击高级配置后修改连接掩码为32。

      例如,如果并发连接数限制设置为10,连接掩码设置为32时,表示每个源IP最多支持10个连接。32掩码

    5. 单击确认

  9. 在左侧导航栏,单击站点信息,在服务器监控区域查看CPU使用率和内存使用率。

    • 如果查看云虚拟主机的CPU使用率和内存使用率仍然过高,请继续执行步骤10

    • 如果查看云虚拟主机的CPU使用率和内存使用率在正常范围内,操作结束。

    说明

    关于云虚拟主机的CPU使用率和内存使用率是否过高或正常,需要您根据实际业务自行评估。

  10. (可选)检查.htaccess文件是否配置错误,并根据实际需求进行修改。

    以检查普通版Linux操作系统独享云虚拟主机.htaccess文件的配置为例,具体操作如下所示:

    1. 在左侧导航栏,选择文件管理 > 文件管理器

    2. 单击站点根目录,找到.htaccess文件后,然后单击对应操作列的查看

      文件管理

    3. 检查并修改.htaccess文件。

      例如.htaccess文件的具体内容如下所示:

      Options+FollowSymLinks
      IndexIgnore*/*
      RewriteEngine on
      # 目录如果存在,直接访问
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      # 如果目录不存在,则跳转到index.php
      RewriteRule.index.php

      检查上述.htaccess文件,发现RewriteRule.index.php配置项会将所有不存在的访问跳转到index.php中,造成网站访问的持续增多。基于该原因,您可以根据实际需求对RewriteRule.index.php配置项进行相应修改,或将其注释。

    重要

    为了有效预防因云虚拟主机的CPU或内存使用率满载而导致网站无法正常访问,建议您在云虚拟主机的CPU或内存使用率满载前,前往主机信息页面设置自定义监控报警功能。当云虚拟主机的CPU或内存使用率超过报警阈值,您可以在收到监控报警提示时根据本文解决方案进行操作。关于设置自定义监控报警功能的更多信息,请参见获取云虚拟主机的主机信息和站点信息